package com.service;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.vo.Page;

public interface UniversalManager {
	/**
	 * 更新记录到数据表中
	 * 
	 * @param object
	 */
	void update(Object o);

	void saveOrUpdate(Object o);

	/**
	 * 增加记录到数据表中
	 * 
	 * @param object
	 */
	void insert(Object o);

	/**
	 * 根据主键删除一条数据库记录
	 * 
	 * @param object
	 */

	void delete(Object o);

	/**
	 * 获取数据表所有的记录
	 * 
	 * @param object
	 * @return list
	 */
	@SuppressWarnings("unchecked")
	List findAll(Class clazz);

	/**
	 * 根据主键从数据表中取回一个对象
	 * 
	 * @param clazz
	 * @param id
	 * @return object
	 */
	@SuppressWarnings("unchecked")
	Object findByID(Class clazz, Serializable id);

	/**
	 * 依据条件进行删除
	 * 
	 * @param entities
	 */
	@SuppressWarnings("unchecked")
	public void deleteAll(Collection entities);

	/*
	 * @function 根据传递过来的Object,分页显示在数据库中与其匹配的记录
	 * 
	 * @param pageNo 当前页数
	 * 
	 * @param pageSize 每页显示的记录数
	 * 
	 * @param object 将查询条件封装为Object
	 * 
	 * @return 将查询结果封装为Page返回
	 */
	public Page findPageByExample(int pageNo, int pageSize, Object object);

	/**
	 * @function 分页显示符合所有的记录数，将查询结果封装为Page
	 * @param pageNo
	 *            当前页数
	 * @param pageSize
	 *            每页显示的条数
	 * @param map
	 *            将查询条件封装为map
	 * @param clazz
	 * 
	 * @return 查询结果Page
	 */
	public Page findPageByCriteria(int pageNo, int pageSize, Map map,
			Class clazz);
	public Page findPageByCriteria(int pageNo, int pageSize, Map map,Map order,
			Class clazz);
	/**
	 * @function 分页显示符合所有的记录数，将查询结果封装为Pager
	 * @param pageNo
	 *            当前页数
	 * @param pageSize
	 *            每页显示的条数
	 * @param instance
	 *            将查询条件封装为专家Bean
	 * @return 查询结果Pager
	 */
	// public List<Object> findPageByQuery(int pageNo, int pageSize, String hql,
	// Map map);
}
